/*
 *  Autor: Jailson Lima ( PortalDocs )
 *
 *  Data: 29/03/2013
 *
 *  Arquivo: ReadSequentialList.java
 *
 *  Descrição: Implementa uma classe para realizar a leitura de arquivos.
 *
 */



import java.io.FileInputStream;
import java.io.EOFException;
import java.io.IOException;
import java.io.ObjectInputStream;
import javax.swing.JOptionPane;

public class ReadSequentialList
{
   private ObjectInputStream input;

   public void openFile()
   {
      try
      {
         // NOTA: utilizamos o a pasta List, para impedir que algum cliente bug o Servidor ao salvar
         // um documento com o título list_documents, pois faria com que o arquivo de configuração do servidor
         // de mesmo nome fosse substituido pelo documento editado pelo cliente.
         input = new ObjectInputStream( new FileInputStream( "DataBase\\List\\list_documents.ser" ) );
      }
      catch ( IOException ioException )
      {
         JOptionPane.showMessageDialog( null, "Erro ao abrir o banco de dados." );
      }
   }

   public ListDocuments readRecords()
   {
      ListDocuments list = null;

      try
      {
         list = ( ListDocuments ) input.readObject();
         return list;
      }
      catch ( ClassNotFoundException classNotFoundException )
      {
         JOptionPane.showMessageDialog( null, "Erro! Estrutura de Dados não encontrada." );
         list = null;
      }
      catch ( IOException ioException )
      {
         JOptionPane.showMessageDialog( null, "Erro durante a leitura do Banco de Dados." );
         list = null;
      }
      catch ( NullPointerException nullPoiterException )
      {
         // Uma NullPointerException será lançada se o arquivo não existir, pois nesse caso o método openFile irá
         // configurar input como null, e assim a instrução input.readObject() lançará uma exceção.
         JOptionPane.showMessageDialog( null, "Erro! Banco de Dados não encontrado." );
         list = null;
      }
      finally
      {
         return list;
      }
   }

   public void closeFile()
   {
      try
      {
         if ( input != null )
            input.close();
      }
      catch ( IOException ioException )
      {
         // System.err.println( "Erro ao fechar o banco de dados." );
      }
   }

}